﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;

namespace Intrack
{
    public class BLLOS : IAcessoDB<tbOS>
    {
        private dbEntidadesMob ed = new dbEntidadesMob();

        public int Salvar(tbOS reg)
        {

            if (reg.EntityState == EntityState.Detached)
                ed.AddTotbOS(reg);
            
            ed.SaveChanges();
            return reg.idOS;
        }

        public bool Atualizar(tbOS reg)
        {
            throw new NotImplementedException();
        }

        public List<tbOS> Ler(tbOS reg)
        {
            throw new NotImplementedException();
        }

        //public List<tbOS> ListarDetalhado()
        //{
            
        //    var osList = from os in ed.tbOS
        //                 join cl in ed.tbCliente on os.idCliente equals cl.idCliente
        //                 //select new { os.idOS, os.Cod, os.idCliente, cl.Nome, cl.Endereco  };
        //                 select new { OS = os, OS.  };

        //      var result = osList.AsEnumerable().Select(anonyType => anonyType.
        //    return osList.ToList<tbOS>();
        //}

        public List<tbOS> Listar()
        {
            IQueryable<tbOS> cl = ed.tbOS.AsQueryable();
            return cl.ToList();
        }

        public tbOS LerPorId(int Id)
        {
            tbOS cl = ed.tbOS.First(c => c.idOS == Id);
            return cl;
        }

        public tbOS LerPorCodOS(string strCodOS)
        {
            var osList = from os in ed.tbOS
                         join cl in ed.tbCliente on os.idCliente equals cl.idCliente                        
                         select os;

            //tbOS cl = ed.tbOS.First(c => c.idOS == Id);
            return osList.FirstOrDefault(c => c.Cod == strCodOS);
        }

        public bool Excluir(tbOS reg)
        {
            
              if (reg.EntityState == EntityState.Unchanged)
                ed.DeleteObject(reg);

            ed.SaveChanges();
            return true;
            
        }
    }
}